package com.ruoyi.fly.service.impl;

import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.fly.domain.Product;
import com.ruoyi.fly.domain.vo.ProductVo;
import com.ruoyi.fly.mapper.ProductMapper;
import com.ruoyi.fly.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductServiceImpl implements ProductService {

    @Autowired
    private ProductMapper productMapper;

    /**
     * 根据商品主键查询商品
     * @param id 商品主键
     * @return
     */
    @Override
    public Product selectProductById(String id) {
        Product product = productMapper.selectProductById(id);
        return product;
    }

    /**
     * 查询商品列表
     * @param product 商品
     * @return
     */
    @Override
    public List<Product> selectProductList(Product product) {
        return productMapper.selectProductList(product);
    }

    /**
     * 新增商品
     * @param productVo 商品
     * @return
     */
    @Override
    public R insertProduct(ProductVo productVo) {
        productVo.setCreateTime(DateUtils.getNowDate());
        productVo.setCreateBy(String.valueOf(SecurityUtils.getUserId()));
        return productMapper.insertProduct(productVo)>0?R.ok("新增成功"):R.fail("操作失败");
    }

    /**
     * 上架商品
     * @param productVo
     * @return
     */
    @Override
    public R onlineProduct(ProductVo productVo) {
        return productMapper.onlineProduct(productVo.getId())>0?R.ok("上架成功"):R.fail("操作失败");
    }

    /**
     * 下架商品
     * @param productVo
     * @return
     */
    @Override
    public R offlineProduct(ProductVo productVo) {
        return productMapper.offlineProduct(productVo.getId())>0?R.ok("下架成功"):R.fail("操作失败");
    }

    /**
     * 修改商品
     * @param productVo 商品
     * @return
     */
    @Override
    public R updateProduct(ProductVo productVo) {
        productVo.setUpdateTime(DateUtils.getNowDate());
        productVo.setUpdateBy(String.valueOf(SecurityUtils.getUserId()));
        return productMapper.updateProduct(productVo)>0?R.ok("修改成功"):R.fail("操作失败");
    }

    /**
     * 删除商品
     * @param id 商品主键
     * @return
     */
    @Override
    public R deletesProductById(String id) {
        return productMapper.deleteProductById(id)>0?R.ok("删除成功"):R.fail("操作失败");
    }

    @Override
    public R deleteProductByIds(String[] id) {
        return productMapper.deleteProductByIds(id)>0?R.ok("删除成功"):R.fail("操作失败");
    }
}
